{
 "nbformat": 4,
 "nbformat_minor": 0,
 "metadata": {
  "colab": {
   "name": "Lesson_1-REVISED.ipynb",
   "provenance": [],
   "collapsed_sections": []
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  }
 },
 "cells": [
  {
   "cell_type": "code",
   "metadata": {
    "id": "edKYdxEQYt-l",
    "ExecuteTime": {
     "end_time": "2024-02-14T07:51:52.309760500Z",
     "start_time": "2024-02-14T07:51:52.290296200Z"
    }
   },
   "source": [],
   "execution_count": null,
   "outputs": []
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "zz7SDkPIkVlM"
   },
   "source": [
    "# Урок 1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "p_3vqG5-kVlP"
   },
   "source": [
    "# Линейное пространство. Основные понятия. Часть 1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "GY06IIS-kVlS"
   },
   "source": [
    "_Линейным (векторным) пространством_ $\\mathit{V}$ над некоторым полем $K$ называется множество элементов, называемых векторами, с заданными на нем операциями\n",
    "\n",
    "- сложения: $V \\times V \\rightarrow V$ (любым двум элементам $u$ и $v$ множества $V$ ставится в соответствие третий элемент $w$ этого же множества, называемый _суммой_ элементов $u$ и $v$ и обозначаемый $w=u+v$);\n",
    "\n",
    "- умножения на число: $K \\times V \\rightarrow V$ (любому элементу $u$ множества $V$ и любому вещественному числу $\\lambda$ ставится в соответствие элемент $x$ этого же множества, называемый _произведением элемента $u$ на число_ $\\lambda$ и обозначаемый $x=\\lambda u$ или $x=u\\lambda$)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "kXP1CeOrkVlT"
   },
   "source": [
    "В качестве поля, над которым задается векторное пространство, обычно выбирают множество вещественных чисел $\\mathbb{R}$ или комплексных чисел $\\mathbb{C}$. Элементы такого поля иногда называют _скалярами_."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Sgf3itexkVlV"
   },
   "source": [
    "Операция сложения векторов должна удовлетворять следующим условиям:<br>\n",
    "1) коммутативность: $u+v=v+u$;<br>\n",
    "2) ассоциативность: $(u+v)+w=u+(v+w)$;<br>\n",
    "3) существование такого элемента $0\\in V$, что $u+0=u$ для любого $u$;<br>\n",
    "4) существование для любого $u\\in V$ такого вектора $-u\\in V$, что $u+(-u)=0$.\n",
    "\n",
    "Операция умножения вектора на скаляр должна подчиняться следующим условиям:<br>\n",
    "1) $1\\cdot u=u$ для любого $u\\in V$;<br>\n",
    "2) ассоциативность операции умножения на скаляр: $\\lambda (\\mu \\cdot u)=(\\lambda \\cdot \\mu) u$;<br>\n",
    "3) дистрибутивность относительно сложения векторов: $\\lambda(u+v)=\\lambda u+\\lambda v$;<br>\n",
    "4) дистрибутивность относительно сложения скаляров: $(\\lambda+\\mu)u=\\lambda u+\\mu u$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "-P4xroqzkVlX"
   },
   "source": [
    "Элемент $0$ называется _нулевым вектором_, элемент $-u$ называется _противоположным вектором_ к $u$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ZvG2QN1KkVlY"
   },
   "source": [
    "### Примеры"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "r2pgbJZUkVla"
   },
   "source": [
    "__1.__ Самым известным примером линейного пространства является множество всех свободных векторов на плоскости. В аналитической геометрии операция сложения двух таких векторов $u+v$ определена по «правилу параллелограмма», а умножению вектора $u$ на число $\\lambda$ соответствует вектор $\\lambda u$, имеющий в $|\\lambda|$ раз большую длину по сравнению с исходным вектором $u$ и то же направление, если $\\lambda > 0$, и противоположное, если $\\lambda < 0$.\n",
    " \n",
    "Соответствие этих операций условиям для линейного пространства проверяется элементарно. Таким образом, это множество является линейным пространством. Аналогично множества векторов на прямой и в пространстве также будут являться линейными пространствами."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "FPhzlMj1kVld"
   },
   "source": [
    "__2.__ Рассмотрим в качестве примера теперь множество точек на координатной плоскости. Возьмем точку $a$, которой соответствуют координаты $(a_{1},a_{2})$, и точку $b$, которой соответствуют координаты $(b_{1},b_{2})$. Зададим в этом пространстве операцию сложения как покоординатную сумму двух элементов:\n",
    "\n",
    "$$a+b = (a_{1}+b_{1}, a_{2}+b_{2})$$\n",
    "\n",
    "и операцию умножения элемента на число как умножение каждой его координаты на это число:\n",
    "\n",
    "$$\\lambda a=\\lambda(a_{1},a_{2})=(\\lambda a_{1}, \\lambda a_{2}).$$\n",
    "\n",
    "Такое пространство над полем вещественных чисел с заданными операциями сложения и умножения на число будет соответствовать условиям векторного пространства и обычно обозначается $\\mathbb{R}^{2}$.\n",
    "\n",
    "В общем виде это можно представить как пространство $\\mathbb{R}^{n}$ — множество упорядоченных последовательностей длины $n$ элементов поля $\\mathbb{R}$. Сложение и умножение на число элементов его определяются покомпонентно: \n",
    " \n",
    " $$(a_{1},a_{2}, ... ,a_{n})+(b_{1}, b_{2},...,b_{n})=(a_{1}+b_{1}, a_{2}+b_{2}, ..., a_{n}+b_{n}), \\\\\n",
    "\\lambda(a_{1},a_{2},...,a_{n})=(\\lambda a_{1}, \\lambda a_{2},...,\\lambda a_{n}).$$\n",
    " \n",
    " \n",
    "Получившееся линейное пространство называют _n-мерным координатным пространством_."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "A2jb9zMTkVlf"
   },
   "source": [
    "__3.__ Примером линейного пространства может служить множество $\\left \\{P_{n}(t)\\right \\}$ всех алгебраических многочленов степени не выше $n$ с операциями сложения и умножения на вещественные числа, определенными по обычным правилам математического анализа."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Rp3y5MZSkVlh"
   },
   "source": [
    "Другие примеры векторных пространств:<br>\n",
    "1) множество $C[a,b]$ всех функций $u=u(t)$, определенных и непрерывных на сегменте $[a,b]$;<br>\n",
    "2) множество всех решений однородной системы  $m$ уравнений с $n$ неизвестными."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "xQjEkghMkVll"
   },
   "source": [
    "## Линейная зависимость векторов"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Hw7QEAZHkVln"
   },
   "source": [
    "__Определение__\n",
    "\n",
    "Основным понятием линейной алгебры является _линейная зависимость (независимость)_ векторов.\n",
    "Векторы $u_{1},u_{2}, ...,u_{n}$ являются _линейно зависимыми_, если найдутся такие числа $\\lambda_{1}, \\lambda_{2}, ..., \\lambda_{n}$, что хотя бы одно из них отлично от нуля и \n",
    " \n",
    " \n",
    "$$\\lambda_{1}u_{1}+\\lambda_{2}u_{2}+...+\\lambda_{n}u_{n}=0.$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Y1TTlxSTkVlp"
   },
   "source": [
    "Выражение $\\sum_{t=1}^{n}\\lambda_{t}u_{t}$ называется _линейной комбинацией_ элементов $u_{1},u_{2},...,u_{n}$ пространства $V$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "oIX-LImokVlq"
   },
   "source": [
    "Элементы $u_{1},u_{2},...,u_{n}$ векторного пространства $V$ называются _линейно независимыми_, если равенство $\\sum_{t=1}^{n}\\lambda_{t}u_{t}=0$ выполняется только тогда, когда $\\lambda_{1}= \\lambda_{2}= ...= \\lambda_{n}=0$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "MiJZbSBqkVls"
   },
   "source": [
    "__Если для данной системы ненулевых векторов существует нетривиальная (если хотя бы один из коэффициентов отличен от нуля) линейная комбинация, то каждый из этих векторов может быть выражен через линейную комбинацию остальных.__\n",
    "\n",
    "Справедливо и обратное утверждение: __для того, чтобы некоторое множество элементов линейного пространства было линейно зависимым, необходимо и достаточно, чтобы один из этих элементов являлся линейной комбинацией остальных.__"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "CQ5LW940kVly"
   },
   "source": [
    "Справедливы два элементарных утверждения:\n",
    "\n",
    "1. _Если среди элементов $a_{1}, a_{2},...,a_{n}$ есть нулевой элемент, то эти элементы линейно зависимы._\n",
    "\n",
    "В самом деле, если, например, $a_{1} =0$, то линейная комбинация элементов будет равняться нулю при $\\lambda_{1}=1, \\lambda_{2}= ...= \\lambda_{n}=0$.\n",
    "\n",
    "2. _Если некоторое подмножество множества $a_{1}, a_{2},...,a_{n}$ линейно зависимо, то и все элементы $a_{1}, a_{2},...,a_{n}$ линейно зависимы_.\n",
    "\n",
    "В самом деле, допустим, что линейно зависимое подмножество состоит из первых $k<n$ элементов множества. Тогда существуют не равные нулю одновременно числа $\\lambda_{1}, \\lambda_{2},...,\\lambda_{k}$, такие, что \n",
    "\n",
    "$$\\sum_{i=1}^{k}\\lambda_{i}a_{i}=0.$$\n",
    "\n",
    "Это равенство также можно записать в виде $$\\sum_{i=1}^{k}\\lambda_{i}a_{i}+\\sum_{i=k+1}^{n} 0 a_{i}=0,$$\n",
    "что говорит о линейной зависимости векторов $a_{1}, a_{2},...,a_{n}$. Что и требовалось доказать."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "InO6qdVLkVl2"
   },
   "source": [
    "Вернемся к примеру с векторами на плоскости. В этом случае любые два ненулевых и неколлинеарных (не параллельных и не лежащих на одной прямой) вектора будут линейно независимы, так как нельзя выразить один через другой, а уже любые три вектора будут линейно зависимы — каждый из них можно будет выразить через линейную комбинацию двух других."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "MnDnzhFHkVl5"
   },
   "source": [
    "## Базис и размерность"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "5RntR-fakVl8"
   },
   "source": [
    "__Определение__\n",
    "\n",
    "Совокупность $n$ линейно независимых векторов линейного пространства $V$ будет называться _базисом_ этого пространства, если для каждого элемента $u$ пространства $V$ найдутся такие вещественные числа $\\xi_{1},\\xi_{2},. . . , \\xi_{n}$, что справедливо равенство\n",
    "\n",
    "$$u = \\xi_{1}e_{1} + \\xi_{2}e_{2} + . . . + \\xi_{n}e_{n}.$$\n",
    "\n",
    "Коэффициенты $\\xi_{i}$ в этом выражении называются _координатами_ вектора $u$ в базисе $e_{1} , . . . , e_{n}$, а само такое представление вектора $u$ называется _разложением этого вектора по базису_."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "QIrP3SU5kVmE"
   },
   "source": [
    "__Для каждого элемента линейного пространства $V$ существует единственное представление в виде линейной комбинации базисных элементов.__"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "8AqY4a4MkVmH"
   },
   "source": [
    "__Определение__\n",
    "\n",
    "Линейное пространство $V$ называется _$n$-мерным_, если в нем существует $n$ линейно независимых векторов, а любой набор из большего количества векторов оказывается линейно зависимым. При этом число $n$ называется _размерностью_ этого линейного пространства и обозначается $dim V$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "0fqFu0aPkVmI"
   },
   "source": [
    "__Определение__\n",
    "\n",
    "Линейное пространство $V$ называется _бесконечномерным_, если в нем существует любое число линейно независимых элементов."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ZS1nwlq0kVmK"
   },
   "source": [
    "Базис линейного пространства $\\mathbb{R}^{n}$, состоящий из векторов $e_{1}=(1,0,...,0), \\; e_{2}=(0,1,...,0), ...,e_{n}=(0,0,...,1)$, называется _стандартным базисом_ этого пространства."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Z46WpSWZkVmP"
   },
   "source": [
    "__Теорема__\n",
    "\n",
    "Если $V$ — линейное пространство размерности $n$, то любые $n$ линейно независимых элементов этого пространства образуют его базис."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "9WnGM8BnkVmX"
   },
   "source": [
    "__Доказательство__\n",
    "\n",
    "Пусть $e_{1}, e_{2},...,e_{n}$ — любая система $n$ линейно независимых векторов пространства $V$ (существование хотя бы одной такой системы вытекает из определения $n$-мерного линейного пространства).\n",
    "\n",
    "Если $u$ — любой элемент пространства $V$, тогда из того же определения следует, что система $(n+1)$ элементов $u, e_{1}, e_{2},...,e_{n}$ линейно зависима, то есть найдутся не все равные нулю вещественные числа $\\alpha_{0},\\alpha_{1},\\alpha_{2},...,\\alpha_{n}$, такие, что \n",
    "\n",
    "$$\\alpha_{0}u+\\alpha_{1}e_{1}+\\alpha_{2}e_{2}+...+\\alpha_{n}e_{n}=0.$$\n",
    "\n",
    "$\\alpha_{0}$ отлично от нуля (иначе из предыдущего равенства вытекала бы линейная зависимость векторов $e_{1}, e_{2},...,e_{n}$). \n",
    "\n",
    "Поделив равенство на $\\alpha_{0}$ и положив $\\xi_{1}=-\\frac{\\alpha_{1}}{\\alpha_{0}},\\xi_{2}=-\\frac{\\alpha_{2}}{\\alpha_{0}},...,\\xi_{n}=-\\frac{\\alpha_{n}}{\\alpha_{0}}$, получим\n",
    "\n",
    "$$u = \\xi_{1}e_{1} + \\xi_{2}e_{2} + . . . + \\xi_{n}e_{n}.$$\n",
    "\n",
    "Так как $u$ — произвольный элемент пространства $V$, последнее равенство доказывает, что система векторов $e_{1}, e_{2},...,e_{n}$ является базисом пространства $V$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "spBkK4XakVmZ"
   },
   "source": [
    "## Подпространства линейного пространства"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "7konrCaZkVma"
   },
   "source": [
    "Подмножество $L$ линейного пространства $V$ называют _подпространством линейного пространства_, если оно образует линейное пространство относительно операций, определенных на $V$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "frmuaH3ukVmr"
   },
   "source": [
    "Другими словами, для подпространства должны выполняться все те же аксиомы, что и для исходного линейного пространства. Из этого следует, что подпространство линейного пространства и само по себе является линейным пространством."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "FN1D1eM3kVmt"
   },
   "source": [
    "__Примеры__\n",
    "\n",
    "- Подмножество всех свободных векторов, параллельных некоторой плоскости, является подпространством линейного пространства всех свободных векторов в трехмерном пространстве.\n",
    "\n",
    "- Линейное пространство $\\left\\{P_{n}(t)\\right\\}$ всех алгебраических многочленов степени не выше $n$ является подпространством линейного пространства $C[a,b]$ всех функций $u=u(t)$, определенных и непрерывных на сегменте $a\\leq t \\leq b$.\n",
    "\n",
    "- Подпространством любого линейного пространства будет:\n",
    "\n",
    "    а) само линейное пространство;\n",
    "    \n",
    "    б) множество, состоящее из одного нулевого элемента."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "bxtLt-bdkVmu"
   },
   "source": [
    "__Утверждение__\n",
    "\n",
    "Подмножество $L$ линейного пространства $V$ является его подпространством тогда и только тогда, когда для любых элементов $u, v\\in L$ и любого $\\alpha \\in \\mathbb{R}$ выполняются условия:\n",
    "\n",
    "$$1)\\ u+v\\in L;$$\n",
    "\n",
    "$$2)\\ \\alpha\\cdot u \\in L.$$\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "RqfGOqzzkVmv"
   },
   "source": [
    "__Пример__\n",
    " \n",
    "Определим, будут ли являться подпространствами линейного пространства $\\mathbb{R}^{3}$ следующие множества:\n",
    " \n",
    "   а) множество всех векторов вида $(0, a, b)$;\n",
    "   \n",
    "   б) множество всех векторов вида $(1, a, b)$.\n",
    "    \n",
    "__Решение__\n",
    " \n",
    "1. Проведя проверку по приведенному утверждению, мы увидим, что \n",
    " \n",
    "$$(0, a, b)+(0, c, d) = (0, a+c, b+d),$$ $$\\alpha\\cdot (0, a, b) = (0, \\alpha a, \\alpha b).$$\n",
    " \n",
    " \n",
    "Полученные векторы также принадлежат указанному в задании множеству всех векторов вида $(0, a, b)$, то есть данное множество является подпространством линейного пространства $\\mathbb{R}^{3}$.\n",
    " \n",
    "2. Проведя проверку по приведенному утверждению, мы увидим, что \n",
    " \n",
    "$$(1, a, b)+(1, c, d) = (2, a+c, b+d),$$ $$\\alpha\\cdot (1, a, b) = (\\alpha, \\alpha a, \\alpha b).$$\n",
    " \n",
    " \n",
    "Полученные векторы уже не принадлежат указанному в задании множеству всех векторов вида $(1, a, b)$, то есть данное множество не является подпространством линейного пространства $\\mathbb{R}^{3}$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "rL-3xO5XkVnB"
   },
   "source": [
    "__Определение__\n",
    "\n",
    "Пусть даны два подпространства  $V_{1}$ и $V_{2}$ линейного пространства $V$. Тогда: \n",
    "\n",
    "1. _Объединением подпространств_ $V_{1}$ и $V_{2}$ называется множество элементов $x\\in V$, таких,\n",
    "что $x\\in V_{1}$ либо $x\\in V_{2}$. Объединение подпространств $V_{1}$ и $V_{2}$ обозначается $V_{1}\\cup V_{2}$. \n",
    "\n",
    "\n",
    "2. _Пересечением подпространств_ $V_{1}$ и $V_{2}$ называется множество элементов $x\\in V$, принадлежащих $V_{1}$ и $V_{2}$ одновременно. Пересечение подпространств $V_{1}$ и $V_{2}$ обозначается $V_{1}\\cap V_{2}$.\n",
    "\n",
    "\n",
    "3. _Суммой подпространств_ $V_{1}$ и $V_{2}$ называется совокупность всех элементов $x_{1}+x_{2}\\in V$ при условии, что $x_{1}\\in V_{1}$ и $x_{2}\\in V_{2}$. Сумма подпространств $V_{1}$ и $V_{2}$ обозначается $V_{1}+V_{2}$.\n",
    "\n",
    "\n",
    "4. _Прямой суммой подпространств_ $V_{1}$ и $V_{2}$  называется совокупность всех элементов $x_{1}+x_{2}\\in V$ при условии, что $x_{1}\\in V_{1}$ и $x_{2}\\in V_{2}$ и $V_{1}\\cap V_{2}={0}$. Прямая сумма обозначается $V_{1}\\oplus V_{2}$.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "YFvzOOwfkVnD"
   },
   "source": [
    "__Пример__\n",
    "\n",
    "Пусть $R$ — линейное пространство всех свободных векторов в трехмерном пространстве, $L_{1}$ — подпространство всех свободных векторов, параллельных плоскости $Oxy$, $L_{2}$ — подпространство всех свободных векторов, параллельных плоскости $Oxz$. Тогда суммой подпространств $L_{1}$ и $L_{2}$ будет являться все пространство $R$, а пересечением их будет являться множество векторов, параллельных оси $Ox$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "kfK6p16LkVnE"
   },
   "source": [
    "__Утверждение__\n",
    "\n",
    "Сумма размерностей произвольных подпространств $L_{1}$ и $L_{2}$ конечномерного линейного пространства $R$ равна сумме размерности пересечения этих подпространств и размерности их суммы."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "MyOFHXCPkVnJ"
   },
   "source": [
    "__Утверждение__\n",
    "\n",
    "Размерность любого подпространства $n$-мерного линейного пространства не превосходит размерности $n$ этого пространства."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ru-WGx__kVnK"
   },
   "source": [
    "__Определение__\n",
    "\n",
    "Возьмем в $n$-мерном линейном пространстве конечный набор векторов $\\{x_{1}, x_{2}, ... , x_{k}\\}$. Тогда совокупность всех линейных комбинаций этих векторов образует некоторое подпространство исходного линейного пространства. Она будет называться _линейной оболочкой_ этого множества и обозначаться $L\\{x_{1}, x_{2}, ... , x_{k}\\}.$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "m4jm1yBgkVnM"
   },
   "source": [
    "## Векторные операции в Python"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "lRWUAMI_kVnN"
   },
   "source": [
    "В машинном обучении, популярным инструментом в котором является язык Python, вектор является основной единицей данных. Векторы содержат значения, называемые _признаками_, которые используются для обучения моделей либо которые необходимо предсказать на основе имеющейся модели. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "l9iareE8kVnQ"
   },
   "source": [
    "Самый простой способ создать вектор в Python — использовать библиотеку NumPy. С ее помощью вектор можно задать явно с использованием функции `numpy.array(list, dtype=None, ...)`.\n",
    "\n",
    "Параметр `list` — итерируемый объект, из которого можно создать вектор (например, список). Параметр `dtype` задает тип данных для значений вектора, например, `int` для целочисленных значений и `float` — для вещественных. Если этот параметр не задан, то тип данных будет определен из типа элементов объекта, заданного в первом аргументе.\n",
    "\n",
    "В NumPy вектор является одномерным массивом."
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "id": "Fb0Nb7CokVnW",
    "ExecuteTime": {
     "end_time": "2024-02-14T07:51:52.587227600Z",
     "start_time": "2024-02-14T07:51:52.313048300Z"
    }
   },
   "source": [
    "import numpy as np"
   ],
   "execution_count": 1,
   "outputs": []
  },
  {
   "cell_type": "code",
   "metadata": {
    "id": "AidZD6P-kVnr",
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "outputId": "545f3e00-c1b6-460c-c27d-8ee935cd4f97",
    "ExecuteTime": {
     "end_time": "2024-02-14T07:51:52.606913Z",
     "start_time": "2024-02-14T07:51:52.559116100Z"
    }
   },
   "source": [
    "a = np.array([1, 2, 3])\n",
    "print(f'Вектор:\\n{a}')"
   ],
   "execution_count": 2,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Вектор:\n",
      "[1 2 3]\n"
     ]
    }
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "id": "ALhwHpPmkVoK",
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "outputId": "9c1f80bd-11f1-4fe0-b790-c6250fe9f688",
    "ExecuteTime": {
     "end_time": "2024-02-14T07:51:52.725852400Z",
     "start_time": "2024-02-14T07:51:52.573370200Z"
    }
   },
   "source": [
    "b = np.array([1, 2, 3, 4, 5], dtype=int)\n",
    "print(f'Вектор с вещественными значениями:\\n{b}')"
   ],
   "execution_count": 3,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Вектор с вещественными значениями:\n",
      "[1 2 3 4 5]\n"
     ]
    }
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "id": "GJj2RdbBkVoW",
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "outputId": "60422f77-3419-4d20-bb0c-a38c55c4b218",
    "ExecuteTime": {
     "end_time": "2024-02-14T07:51:52.744681600Z",
     "start_time": "2024-02-14T07:51:52.597936600Z"
    }
   },
   "source": [
    "c = np.array([True, False, False], dtype=bool)\n",
    "print(f'Вектор с булевыми значениями:\\n{c}')"
   ],
   "execution_count": 4,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Вектор с булевыми значениями:\n",
      "[ True False False]\n"
     ]
    }
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "id": "ifOdNGMheDF7",
    "ExecuteTime": {
     "end_time": "2024-02-14T07:51:52.747144500Z",
     "start_time": "2024-02-14T07:51:52.610192900Z"
    }
   },
   "source": [],
   "execution_count": 4,
   "outputs": []
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ktx8egvOkVoe"
   },
   "source": [
    "Тип значений вектора можно узнать с помощью атрибута `vec.dtype`, где `vec` — объект вектора."
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "id": "lB_Yei4OkVoo",
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "outputId": "4c01350a-be36-4b89-d759-5ddb1f0a9bfd",
    "ExecuteTime": {
     "end_time": "2024-02-14T07:51:52.750525700Z",
     "start_time": "2024-02-14T07:51:52.621955900Z"
    }
   },
   "source": [
    "print(f'Тип булевого вектора:\\n{c.dtype}')"
   ],
   "execution_count": 5,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Тип булевого вектора:\n",
      "bool\n"
     ]
    }
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "71ZB_Y00kVox"
   },
   "source": [
    "Другим способом задания вектора является функция `numpy.arange([start, ]stop, [step, ]...)`, которая задает последовательность чисел заданного типа из промежутка [`start`, `stop`) (последнее значение не включается) через шаг `step`:\n"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "id": "yHdQQWbRkVoz",
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "outputId": "f505178b-3e12-4ed6-a014-84539d96e554",
    "ExecuteTime": {
     "end_time": "2024-02-14T07:51:52.888432300Z",
     "start_time": "2024-02-14T07:51:52.642108600Z"
    }
   },
   "source": [
    "d = np.arange(start=0, stop=5, step=0.2) # последнее значение не включается!\n",
    "print(f'Вектор вещественных чисел от 0 до 5 с шагом 0.2:\\n{d}')"
   ],
   "execution_count": 6,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Вектор вещественных чисел от 0 до 5 с шагом 0.2:\n",
      "[0.  0.2 0.4 0.6 0.8 1.  1.2 1.4 1.6 1.8 2.  2.2 2.4 2.6 2.8 3.  3.2 3.4\n",
      " 3.6 3.8 4.  4.2 4.4 4.6 4.8]\n"
     ]
    }
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "RCn_RxMfkVpH"
   },
   "source": [
    "Атрибут `numpy.array.shape`, показывающий размеры массива, в случае вектора будет показывать его длину, так как второго измерения нет:"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "id": "PzennH4_kVpJ",
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "outputId": "45ea223c-0e92-4421-8354-f1b8dd208e16",
    "ExecuteTime": {
     "end_time": "2024-02-14T07:51:52.890565600Z",
     "start_time": "2024-02-14T07:51:52.669011400Z"
    }
   },
   "source": [
    "print(f'Длина вектора d: {d.shape}')"
   ],
   "execution_count": 7,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Длина вектора d: (25,)\n"
     ]
    }
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "WCvqRNrlkVpU"
   },
   "source": [
    "С помощью NumPy можно совершать различные векторные операции, в том числе складывать векторы, умножать вектор на число и другой вектор (покоординатно)."
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "id": "GIZNX3cbkVpW",
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "outputId": "f3211059-63ec-47c8-d911-4f7d59ee58e5",
    "ExecuteTime": {
     "end_time": "2024-02-14T07:51:52.947675200Z",
     "start_time": "2024-02-14T07:51:52.696585700Z"
    }
   },
   "source": [
    "a = np.array([1, 2, 3])\n",
    "b = np.array([4, 5, 6])\n",
    "k = 2\n",
    "\n",
    "print(f'Вектор a: {a}')\n",
    "print(f'Вектор b: {b}')\n",
    "print(f'Число k: {k}')"
   ],
   "execution_count": 8,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Вектор a: [1 2 3]\n",
      "Вектор b: [4 5 6]\n",
      "Число k: 2\n"
     ]
    }
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "id": "cyIPt-bokVpe",
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "outputId": "84cc215f-08b2-4d74-af90-e03a7876952c",
    "ExecuteTime": {
     "end_time": "2024-02-14T07:51:52.951980100Z",
     "start_time": "2024-02-14T07:51:52.729226500Z"
    }
   },
   "source": [
    "print(f'Вектор a + b: {a + b}')"
   ],
   "execution_count": 9,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Вектор a + b: [5 7 9]\n"
     ]
    }
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "id": "PuISb7PDkVpn",
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "outputId": "be2372cf-c99f-45fc-e86d-76a386720c34",
    "ExecuteTime": {
     "end_time": "2024-02-14T07:51:52.982069400Z",
     "start_time": "2024-02-14T07:51:52.745876900Z"
    }
   },
   "source": [
    "print(f'Вектор a - b: {a - b}')"
   ],
   "execution_count": 10,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Вектор a - b: [-3 -3 -3]\n"
     ]
    }
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "id": "hWV0twetkVp0",
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "outputId": "8eb52a68-ee7d-4028-e763-78e458f8693f",
    "ExecuteTime": {
     "end_time": "2024-02-14T07:51:52.993271700Z",
     "start_time": "2024-02-14T07:51:52.767529Z"
    }
   },
   "source": [
    "print(f'Вектор ka: {k * a}')"
   ],
   "execution_count": 11,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Вектор ka: [2 4 6]\n"
     ]
    }
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "id": "ws-fEepikVp_",
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "outputId": "5dcacc6f-429f-4c70-d5f3-a0dbf03d41ca",
    "ExecuteTime": {
     "end_time": "2024-02-14T07:51:53.221005400Z",
     "start_time": "2024-02-14T07:51:52.926707700Z"
    }
   },
   "source": [
    "print(f'Покоординатное умножение векторов a и b: {a * b}')"
   ],
   "execution_count": 12,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Покоординатное умножение векторов a и b: [ 4 10 18]\n"
     ]
    }
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "E5wedvSckVqF"
   },
   "source": [
    "Другие векторные операции мы рассмотрим в следующих уроках."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "xH8_mN7okVqG"
   },
   "source": [
    "## Примеры задач"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ciXbchOhkVqH"
   },
   "source": [
    "Для векторов $x, y, z$ и вещественных чисел $\\alpha_{i}$ решим следующие задачи:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "p4uFqdlPkVqI"
   },
   "source": [
    "__1.__ Известно, что векторы некоторого линейного пространства $x$, $y$ и $z$ линейно независимы. Будут ли линейно независимы слеудующие векторы: $x-y, y-z, z-x?$\n",
    "\n",
    "__Решение__\n",
    "\n",
    "Заметим, что $x-y=-((y-z)+(z-x))$, то есть один из векторов является линейной комбинацией двух остальных. Из этого следует, что векторы линейно зависимы."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ypvfV9tckVqL"
   },
   "source": [
    "__2.__ Известно, что векторы некоторого линейного пространства $x$, $y$ и $z$ линейно независимы. Будут ли линейно независимы слеудующие векторы: $x, x+y, x+y+z?$\n",
    "\n",
    "__Решение__\n",
    "\n",
    "Приравняем линейную комбинацию данных векторов к нулевому вектору:\n",
    "$$\\alpha_{1}x+\\alpha_{2}(x+y)+\\alpha_{3}(x+y+z)=0.$$\n",
    "Учитывая свойства линейных пространств, мы можем раскрыть скобки и преобразовать полученное уравнение к виду\n",
    "$$(\\alpha_{1}+\\alpha_{2}+\\alpha_{3})x+(\\alpha_{2}+\\alpha_{3})y+\\alpha_{3}z=0.$$\n",
    "Тогда, если предположить, что векторы линейно независимы, можно сделать вывод, что все коэффициенты должны равняться нулю. Получаем систему уравнений:\n",
    "$$\\begin{cases}\n",
    " \\alpha_{1}+\\alpha_{2}+\\alpha_{3}=0,\\\\\n",
    " \\alpha_{2}+\\alpha_{3}=0,\\\\\n",
    " \\alpha_{3}=0,\n",
    "\\end{cases}$$\n",
    "откуда следует, что $\\alpha_{1}=\\alpha_{2}=\\alpha_{3}=0$. Таким образом, векторы $x, x+y, x+y+z$ линейно независимы."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "UlCV60j8kVqM"
   },
   "source": [
    "__3.__ Исследовать на линейную зависимость:\n",
    "$$f_{1}(x)=x^{2}+5, f_{2}(x)=x^{2}, f_{3}(x)=1.$$\n",
    " \n",
    "__Решение__\n",
    " \n",
    "Заметим, что $f_{1}(x)=f_{2}(x)+5f_{3}(x)$, то есть вектор $f_{1}(x)$ — линейная комбинация векторов $f_{2}(x)$ и $f_{3}(x)$, из чего можно сделать вывод, что $f_{1}(x)=x^{2}+5$ и $f_{2}(x)=x^{2}$, $f_{3}(x)=1$ линейно зависимы."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "6cIV197ujWMV"
   },
   "source": []
  },
  {
   "cell_type": "code",
   "metadata": {
    "id": "TUTos46-6MdY",
    "ExecuteTime": {
     "end_time": "2024-02-14T07:51:53.363713100Z",
     "start_time": "2024-02-14T07:51:53.291621200Z"
    }
   },
   "source": [],
   "execution_count": 12,
   "outputs": []
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "DkGHOBdkkVqO"
   },
   "source": [
    "__4.__ Найти координаты вектора $x = (2, 3, 5)\\in \\mathbb{R}^{3}$ в стандартном базисе трехмерного пространства.\n",
    "\n",
    "> Indented block\n",
    "\n",
    "> Indented block\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "__Решение__\n",
    "\n",
    "Стандартный базис линейного пространства $\\mathbb{R}^{3}$ образуют векторы \n",
    "$e_{1}=(1, 0, 0)$, $e_{2}=(0, 1, 0)$, $e_{3}=(0, 0, 1)$.\n",
    "Тогда \n",
    "\n",
    "$$x=(2, 3, 5)=(2,0,0)+(0, 3, 0)+(0, 0, 5)=2\\cdot(1, 0, 0)+3\\cdot(0, 1, 0)+5\\cdot(0, 0, 1)=2e_{1}+3e_{2}+5e_{3},$$\n",
    "\n",
    "\n",
    "то есть координатами вектора $x$ в стандартном базисе являются $2$, $3$, $5$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "aU5YNMH9kVqP"
   },
   "source": [
    "## Практическое задание"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "NaYoffkueD8U"
   },
   "source": [
    "__1.__ Исследовать на линейную зависимость:\n",
    "\n",
    "$$f_{1}(x)=e^{x}, f_{2}(x)=1, f_{3}(x)=x+1, f_{4}(x)=x-e^{x}.$$\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "cECfCSANkVqR"
   },
   "source": [
    "__2.__ Исследовать на линейную зависимость:\n",
    "$$f_{1}(x)=2, f_{2}(x)=x, f_{3}(x)=x^{2}, f_{4}(x)=(x+1)^{2}$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "DFrjdtbHkVqS"
   },
   "source": [
    "__3.__ Найти координаты вектора $x = (2, 3, 5)\\in \\mathbb{R}^{3}$ в базисе $b_{1}=(0, 0, 10)$, $b_{2}=(2, 0, 0)$, $b_{3}=(0, 1, 0)$.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "5la-eVLukVqT"
   },
   "source": [
    "##__4.__ Найти координаты вектора $3x^{2}-2x+2\\in\\mathbb{R}^{3}[x]$:\n",
    "\n",
    "а) в базисе $1$, $x$, $x^{2}$;\n",
    "\n",
    "б) в базисе $x^{2}$, $x-1$, $1$."
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "id": "jmw8M7Ox4ms2",
    "ExecuteTime": {
     "end_time": "2024-02-14T07:51:53.422319200Z",
     "start_time": "2024-02-14T07:51:53.408299700Z"
    }
   },
   "source": [],
   "execution_count": 12,
   "outputs": []
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "kQlell_GkVqU"
   },
   "source": [
    "##__5.__ Установить, является ли линейным подпространством:\n",
    "\n",
    "а) совокупность всех векторов трехмерного пространства, у которых по крайней мере одна из первых двух координат равна нулю;\n",
    "    \n",
    "б) все векторы, являющиеся линейными комбинациями данных векторов $\\{u_{1}, u_{2}, \\ldots, u_{n}\\}$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "HVgKvuHaEjUo"
   },
   "source": [
    "## Литература"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "QJAcs-WIkVqY"
   },
   "source": [
    "1. Ильин В. А., Позняк Э. Г. Линейная алгебра: Учеб. для вузов. — 6-е изд. — М.: Физматлит, 2005.\n",
    "2. Кострикин А. И., Манин Ю. И. Линейная алгебра и геометрия. Учеб. пособие для вузов. — 2-е изд. — М.: Наука, Главная редакция физико-математической литературы, 1986.\n",
    "3. Шерстнева А. И., Янущик О. В. Линейные пространства. Линейные операторы: учебное пособие. Томск: Изд-во Томского политехнического университета, 2010."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Iv-T_NZAkVqZ"
   },
   "source": [
    "## Дополнительные материалы"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "9o_SiUNxkVqa"
   },
   "source": [
    "1. [Создание векторов в NumPy](http://docs.scipy.org/doc/numpy-1.10.1/user/basics.creation.html)"
   ]
  }
 ]
}
